﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using DataAccessComponents;

namespace BusinessLogicLayer
{
    public class KategoriaBL : IBusinessLogicLayer<Kategoria>
    {
        private DbOperations dal = new DbOperations();

        /// <summary>
        /// Funkcja dodawająca kategoria do bazy danych
        /// </summary>
        /// <param name="objDodaj">Obiekt Kategoria</param>
        /// <returns></returns>
        public int dodaj(Kategoria objDodaj)
        {
            return dal.dodajKategoria(objDodaj);
        }

        /// <summary>
        /// Funkcja usuwająca kategoria z bazy danych
        /// </summary>
        /// <param name="idusun">Id kategoriau do usunięcia</param>
        public void usun(int idusun)
        {
            dal.usunKategoria(idusun);
        }

        /// <summary>
        /// Funkcja akutualizująca kategoria w bazie danych
        /// </summary>
        /// <param name="objAktualizuj">Obiekt kategoria zawierający inforamacje do aktualizacji</param>
        public void aktualizuj(Kategoria objAktualizuj)
        {
            dal.aktualizujKategoria(objAktualizuj);
        }

        /// <summary>
        /// Pobiera kategoria na podstawie id kategoria
        /// </summary>
        /// <param name="idpobierz">Id kategoria</param>
        /// <returns>Obiekt Kategoria</returns>
        public Kategoria pobierz(int idpobierz)
        {
            return dal.pobierzKategoria(idpobierz);
        }


        public System.Collections.ObjectModel.ObservableCollection<Kategoria> pobierzListe()
        {
            return dal.pobierzListeKategoria();
        }

        public bool aktualizujListe(System.Collections.ObjectModel.ObservableCollection<Kategoria> lista)
        {
            foreach (Kategoria kategoria in lista)
            {
                if (kategoria.Id_kategoria == 0)
                {
                    this.dodaj(kategoria);
                }
                else
                {
                    this.aktualizuj(kategoria);
                }
            }
            return true;
        }

        public bool usun(System.Collections.ObjectModel.ObservableCollection<Kategoria> lista)
        {
            foreach (Kategoria kategoria in lista)
            {
                if (kategoria.Id_kategoria != 0)
                {
                    this.usun(kategoria.Id_kategoria);
                }
            }
            return true;            
        }
    }
}
